Software is hosted or running on most electronic devices and includes one or more files in the form of human-readable American Standard Code for Information Interchange (“ASCII”) plain text files or binary code. The hosted software, which runs on a processor or central processing unit (“CPU”), provides functionality in a host device but often changes over time. The software changes may result from the need to correct bugs, or errors, in the software files, adapt to evolving technologies, or add new features and functions. In particular, embedded software components hosted on mobile wireless devices often include numerous software bugs that require correction.
The software of a device includes software files divided into smaller units that are often referred to as modules or components. In mobile wireless devices, a real-time operating system (“RTOS”) is typically used in which the hosted software modules or components of the device are linked as a single large file. This large software file is loaded, or embedded, into the device, and is typically stored in the read-only-memory (“ROM”) or flash ROM of the wireless device.
The hosted software files of a wireless device can be updated to correct errors or add new functions using a wireless communication link or over-the-air (“OTA”) link like a radio link. Because of bandwidth, memory and other constraints relating to the wireless device, updating the hosted software after the device has been commercially released requires special proprietary applications. An example of these proprietary applications includes the upgrade or update applications referred to as DeltaUpdate™ and DeltaRewrite™ available from InnoPath Software, Inc. of Alviso, Calif. These upgrade applications are also the subject of the Related Applications.
While the upgrade applications are designed to modify the software hosted on the device, the upgrade applications cannot be used to update themselves. Typical upgrade applications cannot self-upgrade because they control the upgrade process of the device and are required to be running in order for execution of the upgrade process. The typical upgrade methods however require that software not be running in order for it to be upgraded. As such, upgrades of the upgrade applications themselves require the device to be returned to the device manufacturer or service provider for upgrade. Returning the devices to the manufacturer or service provider is a time-consuming and costly process not highly regarded by consumers because of the consumer's increased reliance on these devices. Consequently, there is a need to provide self-upgrades of upgrade applications hosted on wireless devices like cellular telephones and other mobile communication devices, personal digital assistants (“PDAs”), and personal computers.
In the drawings, the same reference numbers identify identical or substantially similar elements or acts. To easily identify the discussion of any particular element or act, the most significant digit or digits in a reference number refer to the Figure number in which that element is first introduced (e.g., element 126 is first introduced and discussed with respect to FIG. 1).